package cn.csc.module.member.dal.dataobject.user;

import cn.csc.framework.mybatis.core.dataobject.BaseDO;
import cn.csc.module.system.enums.social.SocialTypeEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * 会员 DO
 *
 * @author liuchuang
 */
@TableName("member_user")
@KeySequence("member_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberUserDO extends BaseDO {

    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 用户昵称
     */
    private String nickname;
    /**
     * 证件类型：1 身份证，2 军官证，3 护照
     */
    private Byte idCardType;
    /**
     * 证件号
     */
    private String idCardNo;
    /**
     * 真实姓名
     */
    private String name;
    /**
     * 状态
     */
    private Integer status;
    /**
     * 性别
     */
    private Byte gender;
    /**
     * 出生日期
     */
    private Date birthday;
    /**
     * 所在地
     */
    private Integer areaId;
    /**
     * 用户备注
     */
    private String mark;
    /**
     * 积分
     */
    private Integer score;
    /**
     * 头像
     */
    private String avatar;
    /**
     * 手机号
     */
    private String mobile;
    /**
     * 邮箱
     */
    private String email;
    /**
     * 密码
     */
    private String password;
    /**
     * 注册类型 {@link SocialTypeEnum}
     * 10码云, 20钉钉, 30企业微信, 31微信公众号, 32微信开放平台, 34微信小程序
     */
    private Integer registerType;

    /**
     * 用户类型(0普通 5采购商 10供货商 15采购商+供货商 20选品卖家 30供货商+卖家)
     */
    private Integer type;

    /**
     * openid
     */
    private String openId;
    /**
     * 微信 UnionID机制说明
     * 如果开发者拥有多个移动应用、网站应用、和公众账号（包括小程序），可通过 UnionID 来区分用户的唯一性，因为只要是同一个微信开放平台账号下的移
     * 动应用、网站应用和公众账号（包括小程序），用户的 UnionID 是唯一的。换句话说，同一用户，对同一个微信开放平台下的不同应用，UnionID是相同的。
     * unionid
     */
    private String unionId;
    /**
     * token
     */
    private String token;
    /**
     * 支付密码
     */
    private String payPassword;
    /**
     * 注册 IP
     */
    private String registerIp;
    /**
     * 最后登录IP
     */
    private String loginIp;
    /**
     * 最后登录时间
     */
    private LocalDateTime loginDate;

}
